/**
 * @description 定义通用的状态管理器对象
 */
import { deCodeApi, enCodeApi } from "@/util"
import _ from 'lodash'
const initState = {
    token: '',
    userInfo: {},
    menuList: []
}
const common = {
    // 开启命名空间 -- 模块化 -- 也就说在store数据空间中新开一个小的空间
    namespaced: true,
    state:_.cloneDeep(initState),
    getters: {
        // 这里定义的getter方法，Store还需要进行处理
        token(_state) {
            return !!_state.token ? deCodeApi(_state.token) : ''
        },
        userInfo: _state => _state.userInfo,
        menuList: _state => _state.menuList
    },
    mutations: {
        // 这里定义的方法，Store在执行实例化的时候也会进行处理
        // setToken mutation方法，一定有一个入参_state对象
        setToken(_state, _token) {
            _state.token = enCodeApi(_token)
        },
        setUserInfo(_state, _userInfo) {
            _state.userInfo = _userInfo
        },
        setMenuList(_state, _menuList) {
            _state.menuList = _menuList
        },
        clear(_state){
            _state=_.cloneDeep(initState)
        }
    }
}

export default common